package com.friend.street.util;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtil {
	/**
	 * 判断字符串是否为null或者为空
	 * @param str
	 * @return
	 */
	public static boolean isNullOrEmpty(String str){
		if(str == null){
			return true;
		}else if(str.equals("")){
			return true;
		}else if(str.trim().equals("")){
			return true;
		}else{
			return false;
		}
	}
	/**
	 * 判断字符串是否不是null并且非空
	 * @param str
	 * @return
	 */
	public static boolean isNotNullAndEmpty(String str){
		return !isNullOrEmpty(str);
	}
	/**
	 * 处理为null或者前后带有空格的字符串
	 * @param str
	 * @return
	 */
	public static String dealNullOrEmptyString(String str){
		if(str == null || str.equals("null")){
			return "";
		}else{
			return str.trim();
		}
	}
	/**
	 * 得到字符串的真正长度:双字节字符占两个长度，单字节占一个长度
	 * @param str
	 * @return
	 */
	public static int getRealLength(String str){
		int length = 0 ;
		if(isNullOrEmpty(str)){
			return length;
		}
		Pattern p = Pattern.compile("[^\\x00-\\xff]");
		for(int i = 0 ;i < str.length(); i++){
			Matcher m = p.matcher(String.valueOf(str.charAt(i)));
			if(m.matches()){
				length += 2;
			}else{
				length += 1;
			}
		}
		return length;
	}
	/**
	 * 得到字符串长度与对应的字符串的map
	 * @param str
	 * @return
	 */
	public static Map<Integer,String> getLengthMap(String str){
		Map<Integer,String> lengthMap = new HashMap<Integer,String>();
		int length = 0 ;
		if(isNullOrEmpty(str)){
			lengthMap.put(0, "");
		}
		Pattern p = Pattern.compile("[^\\x00-\\xff]");
		for(int i = 0 ;i < str.length(); i++){
			Matcher m = p.matcher(String.valueOf(str.charAt(i)));
			if(m.matches()){
				length += 2;
			}else{
				length += 1;
			}
			lengthMap.put(length,str.substring(0, i+1));
		}
		return lengthMap;
	}
	
	/**
	 * 是否是数字
	 * @param str
	 * @return
	 */
	public static boolean isNumber(String str) {
		if(isNullOrEmpty(str)) {
			return false;
		}
		Pattern p = Pattern.compile("[0-9]+");
		Matcher m = p.matcher(str.trim());
		return m.matches();
	}
	
	/**从字符串中取出第一个数字*/
	public static String getFirstNumber(String str) {
		if(str == null) return "";
		Pattern p = Pattern.compile("[0-9]+");
		Matcher m = p.matcher(str.trim());
		if(m.find()) {
			return m.group(0);
		}
		return "";
	}
	
	public static void main(String args[]){
		System.out.println(getFirstNumber("...11212 "));
	}
}
